/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.cultuurschuur.services;

import be.cultuurschuur.Controllers.*;
import be.cultuurschuur.entity.*;
import be.cultuurschuur.interfaces.*;
import java.io.*;
import java.util.*;
import java.util.logging.*;
import javax.faces.context.*;
import javax.persistence.*;


/**
 *
 * @author Webbie
 */
public class BLBetaalwijze implements BetaalwijzeInterface
{
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("cultuurschuurPU");
    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    
    private String betaalwijzeNaam;

    public String getBetaalwijzeNaam() {
        return betaalwijzeNaam;
    }

    public void setBetaalwijzeNaam(String betaalwijzeNaam) {
        this.betaalwijzeNaam = betaalwijzeNaam;
    }

    @Override
    public Betaalwijze insertBetaalwijze(){ 
        
        tx.begin();
        Betaalwijze betaalwijze = new Betaalwijze();
        betaalwijze.setBetaalwijzeNaam(betaalwijzeNaam);
        
        em.persist(betaalwijze);
        tx.commit();
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("betaalwijze.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(VervoerController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return betaalwijze;
    }
    
    @Override
    public List<Betaalwijze> getBetaalwijzen(){
        return em.createNamedQuery("Betaalwijze.getAll").getResultList();
    }
    
    @Override
    public Betaalwijze getBetaalwijzeById(int id)
    {
        Query q = em.createNamedQuery("Betaalwijze.getById");
        q.setParameter(1, id);
        Betaalwijze betaalwijze = (Betaalwijze)q.getSingleResult();
        return betaalwijze;
    }
    @Override
    public Betaalwijze updateBetaalwijze(Betaalwijze betaalwijze)
    {
        tx.begin();

        Betaalwijze b = em.find(Betaalwijze.class, betaalwijze.getId());
        b.setBetaalwijzeNaam(betaalwijze.getBetaalwijzeNaam());
        
        em.persist(b);

        tx.commit();
        return b;
    }
    @Override
    public boolean deleteBetaalwijze(int id)
    {
        try {
            tx.begin();

            Betaalwijze b = em.find(Betaalwijze.class, id);
            em.remove(b);
            tx.commit();
            return true;
        } catch (Exception exc) {
            return false;
        }
    }
}
